import axios from 'axios'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'

const router = useRouter()

let axiosurl = ""
// 如果为开发模式的话执行url
if (process.env.NODE_ENV === 'development') {
    axiosurl = process.env.VUE_APP_API
} else {
    // 否则设置成其他的模式（这里今后有很多个判断）
    axiosurl = process.env.VUE_APP_API
}
// 创建axios 赋值给常量service 
const service = axios.create({
    baseURL: axiosurl
});

// 添加请求拦截器（Interceptors）
service.interceptors.request.use(function (config) {

    console.log(config);

    const { method } = config
    const url = config.url || ''

    const user = JSON.parse(localStorage.getItem('user') || '[]')

    //修改用户权限拦截
    if (url.includes('/register') && method === 'put') {

        if (!(user.power.includes('所有权限') || user.power.includes('用户权限管理'))) {

            ElMessage({
                type: 'error',
                message: '无权限！',
            })
            return Promise.reject(new Error('没有权限操作！'))
        }
    }

    //成员变更拦截
    if (url.includes('/register') && method === 'delete') {

        if (!(user.power.includes('所有权限') || user.power.includes('成员变更'))) {

            ElMessage({
                type: 'error',
                message: '无权限！',
            })
            return Promise.reject(new Error('没有权限操作！'))
        }
    }

    //住户信息变更拦截
    if (url.includes('/userlist') && (method === 'put' || method === 'delete')) {

        if (!(user.power.includes('所有权限') || user.power.includes('住户信息修改'))) {

            ElMessage({
                type: 'error',
                message: '无权限！',
            })
            return Promise.reject(new Error('没有权限操作！'))
        }
    }





    // 发送请求之前做写什么
    return config;
}, function (error) {
    // 请求错误的时候做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
}, function (error) {
    // 对响应错误做点什么
    console.log('拦截', error);
    if (error.response) {
        switch (error.response.status) {
            case 404:
                console.log("url信息有误")
                break;
            case 500:
                console.log("服务器异常")
                break;
            default:
                console.log("未知错误")
                break;
        }
    }


    return Promise.reject(error);
});
export default service